﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sio.Mdm.Types.Database;
using Sio.Mdm.Entities;
using Ext.Net;

namespace Sio.Mdm.Web.Instalacija
{
    public partial class StoritveSeznam : Controls.Page
	{
		#region Definitions
		public interface StoritveRowEditData
		{
			int StoritevId { get; set; }
			int OrganizacijaId { get; set; }
			string Naziv { get; set; }
		}
		#endregion

		#region OnLoad
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);
			NaloziSeznamStoritev();
		}
		#endregion

		#region Editing
		protected void UrediPodatke(Object sender, DirectEventArgs e)
		{
            StoritveRowEditData EditData = XML.Deserialize<StoritveRowEditData>(e.ExtraParams["data"]);
			if (EditData.StoritevId == -99)
			{
				Storitev ent = EntityFactory.CreateInstance<Storitev>();
				ent.Naziv = EditData.Naziv;
                //ent.OrganizacijaId = UserSession.OrganizacijaId;
				ent.Update();
			}
            else if (EditData.StoritevId > 0)
			{
                Storitev ent = EntityFactory.LoadEntity<Storitev>
                 (new Filter<Storitev>().Where(r => r.StoritevId == EditData.StoritevId)
					);

				if (ent.EntityState != EntityState.Unknown)
				{
					ent.Naziv = EditData.Naziv;
                    //ent.OrganizacijaId = UserSession.OrganizacijaId;
                    ent.Update();
				}
				else
				{
					e.Success = false;
					X.Msg.Alert("Manjkajoči podatki", "Iskani zapis ne obstaja.").Show();
					return;
				}
			}
		}
		protected void OdstraniZapise(object sender, DirectEventArgs e)
		{
			List<int> deletedItems = e.GetIdList<int>("selected", "StoritevId");
			if (deletedItems.Count > 0)
			{
                EntityCollection<Storitev> col = new EntityCollection<Storitev>(
                    new Filter<Storitev>().SelectByField(r => r.StoritevId, deletedItems.ToArray())
				);
				col.RemoveAll();
				col.Update();
			}
		}
		#endregion

		#region Private
		private void NaloziSeznamStoritev()
		{
			GridStoritveSeznam.LoadData<Storitev>(
                new Filter<Storitev>().Where(p => p.StoritevId != null).OrderBy(p => p.Naziv));
		}
		#endregion
	}
}
